//package com.yang;
//
//
//import org.bukkit.Bukkit;
//import org.bukkit.Location;
//import org.bukkit.Material;
//import org.bukkit.World;
//import org.bukkit.attribute.Attribute;
//import org.bukkit.configuration.ConfigurationSection;
//import org.bukkit.configuration.file.FileConfiguration;
//import org.bukkit.entity.EntityType;
//import org.bukkit.entity.LivingEntity;
//import org.bukkit.entity.Player;
//import org.bukkit.event.EventHandler;
//import org.bukkit.event.Listener;
//import org.bukkit.event.entity.EntityDeathEvent;
//import org.bukkit.inventory.ItemStack;
//import org.bukkit.plugin.java.JavaPlugin;
//
//import java.util.List;
//
//public final class RPGMonster1 extends JavaPlugin implements Listener {
//    @Override
//    public void onEnable() {
//        getServer().getPluginManager().registerEvents(this, this);
//        loadConfig();
//        startMonsterSpawning();
//    }
//
//    private void loadConfig() {
//        getConfig().options().copyDefaults(true);
//        saveDefaultConfig();
//    }
//
//    private void startMonsterSpawning() {
//        Bukkit.getScheduler().runTaskTimer(this, () -> {
//            //往控制台输出测试内容
//            for (World world : Bukkit.getServer().getWorlds()) {
//                for (LivingEntity entity : world.getLivingEntities()) {
////                    if (entity instanceof Player) {
//                    if (entity instanceof LivingEntity) {
//                        LivingEntity livingEntity = (LivingEntity) entity;
//                        spawnMonstersNearPlayer(livingEntity.getLocation());
//                        Player player = (Player) entity;
//                        spawnMonstersNearPlayer(player.getLocation());
//                    }
//                }
//            }
//        }, 0, 40); // 每20秒执行一次
//    }
//
//    private void spawnMonstersNearPlayer(Location location) {
//        int radius = 32; // 生成怪物的半径
//        int monsterCount = 10; // 每次生成的怪物数量
//        FileConfiguration config = getConfig();
//        ConfigurationSection monstersSection = config.getConfigurationSection("monsters");
//
//        if (monstersSection != null) {
//            for (String monsterName : monstersSection.getKeys(false)) {
//                ConfigurationSection monsterSection = monstersSection.getConfigurationSection(monsterName);
//                int num = monsterSection.getInt("num", 1); // 获取每个怪物生成的数量，默认为1
//
//                getLogger().info("num :" + num);
//                for (int i = 0; i < num; i++) {
//                    if (num <= 0) {
//                        getLogger().info("spawnMonstersNearPlayer进入了back");
//                        break;
//                    }
//
//                    Location spawnLocation = location.clone().add((Math.random() * radius * 2) - radius, 0, (Math.random() * radius * 2) - radius);
//                    spawnMonster(monsterName, spawnLocation);
//                    num--;
//                }
//            }
//        }
//    }
//
//    private void spawnMonster(String monsterName, Location spawnLocation) {
//        FileConfiguration config = getConfig();
//        ConfigurationSection monsterSection = config.getConfigurationSection("monsters." + monsterName);
//        if (monsterSection != null) {
//            // 获取掉落物品列表
//            List<String> drops = monsterSection.getStringList("drops");
//            if (config.contains("monsters." + monsterName + ".location")) {
//                World world = Bukkit.getWorld(config.getString("monsters." + monsterName + ".location.world"));
//                double x = config.getDouble("monsters." + monsterName + ".location.x");
//                double y = config.getDouble("monsters." + monsterName + ".location.y");
//                double z = config.getDouble("monsters." + monsterName + ".location.z");
//
//                if (world != null) {
//                    Location location = new Location(world, x, y, z);
//                    EntityType entityType = EntityType.valueOf(config.getString("monsters." + monsterName + ".type"));
//                    double health = config.getDouble("monsters." + monsterName + ".health");
//                    List<String> drops1 = config.getStringList("monsters." + monsterName + ".drops");
//                    // 生成怪物
//                    LivingEntity monster = (LivingEntity) location.getWorld().spawnEntity(location, entityType);
//                    monster.setCustomNameVisible(true);
//                    monster.setCustomName(config.getString("monsters." + monsterName + ".name"));
//
//                    monster.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(health);
//                    monster.setHealth(health);
//                    // 读取最小和最大掉落数量
//                    int minDrop = monsterSection.getInt("min_drop", 0);
//                    int maxDrop = monsterSection.getInt("max_drop", 10);
//
//                    // 随机生成掉落数量
//                    int dropAmount = (int) (Math.random() * (maxDrop - minDrop + 1)) + minDrop;
//
//                    // 生成掉落物品（木剑）
//                    ItemStack woodSword = new ItemStack(Material.WOOD_SWORD);
//                    woodSword.setAmount(dropAmount);
//                    world.dropItemNaturally(spawnLocation, woodSword); // 将掉落木剑放置在生成怪物的位置
//
//                    // 添加其他配置的掉落物品
//                    List<String> otherDrops = monsterSection.getStringList("other_drops");
//                    for (String drop : otherDrops) {
//                        ItemStack item = new ItemStack(Material.valueOf(drop));
//                        world.dropItemNaturally(spawnLocation, item); // 将其他掉落物品放置在生成怪物的位置
//                    }
//                } else {
//                    getLogger().warning("指定的世界不存在！");
//                }
//            }
//        }
//    }
//
//    @EventHandler
//    public void onEntityDeath(EntityDeathEvent event) {
//        // 处理怪物死亡事件逻辑
//        LivingEntity entity = event.getEntity();
//        if (entity instanceof LivingEntity) {
//            LivingEntity livingEntity = (LivingEntity) entity;
//
//            // 检查实体是否是从配置文件生成的怪物
//            FileConfiguration config = getConfig();
//            if (config.contains("monsters")) {
//                ConfigurationSection monstersSection = config.getConfigurationSection("monsters");
//                for (String monsterName : monstersSection.getKeys(false)) {
//                    if (livingEntity.getCustomName() != null &&
//                            livingEntity.getCustomName().equals(config.getString("monsters." + monsterName + ".name"))) {
//                        List<ItemStack> drops = event.getDrops();
//                        drops.clear(); // 清空死亡掉落物品列表
//
//                        // 添加掉落木剑的逻辑
//                        int minDrop = config.getInt("monsters." + monsterName + ".min_drop", 0);
//                        int maxDrop = config.getInt("monsters." + monsterName + ".max_drop", 10);
//                        int dropAmount = (int) (Math.random() * (maxDrop - minDrop + 1)) + minDrop;
//
//                        ItemStack woodSword = new ItemStack(Material.WOOD_SWORD);
//                        woodSword.setAmount(dropAmount);
//                        drops.add(woodSword); // 添加木剑到掉落物品列表
//                    }
//                }
//            }
//        }
//    }
//}
